package persistencia;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import negocio.Cliente;

public class ClienteDAO extends MyBaseDAO {

    private PreparedStatement stIncluirCliente;
    private PreparedStatement stListar;
    private final Connection con;

    public ClienteDAO() throws IOException, SQLException {
        con = super.getConexao();
        stIncluirCliente = con.prepareStatement(
                "INSERT INTO clientes (codigo, nome, fantasia, endereco, bairro, "
                + "cidade, uf, telefone) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
        stListar = con.prepareStatement(
                "SELECT * FROM clientes");
    }

    public void adicionaCliente(Cliente umCliente) throws Exception {
        stIncluirCliente.setInt(1, umCliente.getCodigo());
        stIncluirCliente.setString(2, umCliente.getNome());
        stIncluirCliente.setString(3, umCliente.getFantasia());
        stIncluirCliente.setString(4, umCliente.getEndereco());
        stIncluirCliente.setString(5, umCliente.getBairro());
        stIncluirCliente.setString(6, umCliente.getCidade());
        stIncluirCliente.setString(7, umCliente.getUf());
        stIncluirCliente.setString(8, umCliente.getTelefone());
        stIncluirCliente.executeUpdate();
    }

    public ArrayList<Cliente> getTodos() throws Exception {
        ResultSet rs = stListar.executeQuery();
        return getLista(rs);
    }

    private ArrayList<Cliente> getLista(ResultSet rs) throws Exception {
        ArrayList<Cliente> tmp = new ArrayList<Cliente>();
        while (rs.next()) {
            tmp.add(new Cliente(rs.getInt("codigo"), rs.getString("uf"),
                    rs.getString("cidade"), rs.getString("bairro"), rs.getString("nome"), rs.getString("fantasia"),
                    rs.getString("telefone"), rs.getString("endereco")));
        }
        return tmp;
    }

    public void altera(Cliente cliente) {
        
    }

    public Cliente procuraPorCodigo(int codigo) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}